package com.mpcm.web.client.gin;

import com.google.gwt.inject.client.GinModules;
import com.gwtplatform.dispatch.client.gin.DispatchAsyncModule;
import com.mpcm.web.client.gin.ClientModule;
import com.google.gwt.inject.client.Ginjector;
import com.google.gwt.event.shared.EventBus;
import com.gwtplatform.mvp.client.proxy.PlaceManager;
import com.google.inject.Provider;
import com.mpcm.web.client.core.MainPagePresenter;
import com.mpcm.web.client.core.ResponsePresenter;
import com.google.gwt.inject.client.AsyncProvider;
import com.mpcm.web.client.core.HomeLayoutPresenter;
import com.mpcm.web.client.page.home.HomePresenter;
import com.mpcm.web.client.page.service.ServicePresenter;
import com.mpcm.web.client.page.about.AboutPresenter;
import com.mpcm.web.client.page.cases.CasesPresenter;
import com.mpcm.web.client.page.contact.ContactPresenter;
import com.mpcm.web.client.admin.AdminLayoutPresenter;
import com.mpcm.web.client.admin.AdminPresenter;

@GinModules({ DispatchAsyncModule.class, ClientModule.class })
public interface ClientGinjector extends Ginjector {

	EventBus getEventBus();

	PlaceManager getPlaceManager();

	Provider<MainPagePresenter> getMainPagePresenter();

	Provider<ResponsePresenter> getResponsePresenter();

	AsyncProvider<HomeLayoutPresenter> getHomeLayoutPresenter();

	AsyncProvider<HomePresenter> getHomePresenter();

	AsyncProvider<ServicePresenter> getServicePresenter();

	AsyncProvider<AboutPresenter> getAboutPresenter();

	AsyncProvider<CasesPresenter> getCasesPresenter();

	AsyncProvider<ContactPresenter> getContactPresenter();

	AsyncProvider<AdminLayoutPresenter> getAdminLayoutPresenter();

	AsyncProvider<AdminPresenter> getAdminPresenter();
}
